#define _CRT_SECURE_NO_WARNINGS 1


//#include<vector>
//#include<iostream>
//
//using namespace std;
//
//int longestOnes(vector<int>& nums, int k)
//{
//    int size = nums.size();
//    int left = 0, right = 0;
//    int count = 0, Max = 0;
//    while (right < size)
//    {
//        if (nums[right] == 0)
//        {
//            count++;
//        }
//        while (count > k)
//        {
//            if (nums[left] == 0)
//            {
//                count--;
//            }
//            left++;
//        }
//        Max = max(Max, right - left + 1);
//        right++;
//    }
//    return Max;
//}
//
//int main()
//{
//    vector<int> v = { 0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1 };
//    cout << longestOnes(v, 3) << endl;
//
//	return 0;
//}


//#include<vector>
//#include<iostream>
//
//using namespace std;
//
//int minOperations(vector<int>& nums, int x)
//{
//    int Max = 0, size = nums.size();
//    int left = 0, right = 0, sum = 0;
//    for (auto& e : nums)
//    {
//        sum += e;
//    }
//    int target = sum - x;
//    sum = 0;
//    while (right < size)
//    {
//        sum += nums[right];
//        while (sum > target)
//        {
//            sum -= nums[left++];
//        }
//        if (sum == target)
//        {
//            Max = max(right - left + 1, Max);
//        }
//        right++;
//    }
//    return Max == 0 ? -1 : size - Max;
//}
//
//int main()
//{
//    vector<int> v = { 3,2,20,1,1,3 };
//    cout << minOperations(v, 10) << endl;
//
//	return 0;
//}


#include<set>
#include<vector>
#include<iostream>

using namespace std;

int totalFruit(vector<int>& fruits)
{
    set<int> hash;
    int size = fruits.size(), left = 0, right = 0;
    int Max = 0;
    while (right < size)
    {
        hash.insert(fruits[right]);
        while (hash.size() > 2)
        {
            Max = max(Max, right - left);
            hash.erase(hash.begin());
            left++;
        }
        right++;
    }
    Max = max(Max, right - left);
    return Max;
}

int main()
{
    vector<int> v = { 1,2,3,2,2 };
    cout << totalFruit(v) << endl;

	return 0;
}